package com.edicsem.pe.sie.entity;

import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Set;

import com.edicsem.pe.sie.util.constants.Constants;

/**
 * The persistent class for the tb_empleado database table.
 * 
 */
@Entity
@Table(name="tb_empleado", schema = Constants.ESQUEMA_SIE_POSTGRE)
public class EmpleadoSie implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name="TB_EMPLEADO_IDEMPLEADO_GENERATOR", sequenceName="SIE.TB_EMPLEADO_IDEMPLEADO_SEQ", initialValue=1, allocationSize =1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="TB_EMPLEADO_IDEMPLEADO_GENERATOR")
	private Integer idempleado;

	private String apematemp;

	private String apepatemp;

	private String contrasena;

	private String contrasenacorreo;

	private String correo;
	
	private String genero;

	private String nombreemp;

	private String numdocumento;

	private String usuario;

	private String usuariocreacion;

	private String usuariomodifica;
	
	@Column(columnDefinition="DEFAULT LOCALTIMESTAMP", nullable =  false ,insertable =  false )
	private Timestamp fechacreacion;

	@Column(columnDefinition="DEFAULT LOCALTIMESTAMP", nullable =  false ,insertable =  false )
	private Timestamp fechamodifica;

   
	private Date fechanacimiento;
	
	/**declaracion de Variables temporales**/
	
	@Transient
	private String nombresCompletos;
	
	/*tiene que ver relacion con el modulo MOVIMINETO DE MERCADERIA*/
	@Transient
	private int cargo;

	//bi-directional many-to-one association to ControlKardexSie
	@OneToMany(mappedBy="tbEmpleado")
	private Set<ControlKardexSie> tbControlKardexs;

	//bi-directional many-to-one association to DetPermisoEmpleadoSie
	@OneToMany(mappedBy="tbEmpleado")
	private Set<DetPermisoEmpleadoSie> tbDetPermisoEmpleados;

	//bi-directional many-to-one association to DomicilioPersonaSie
	@OneToMany(mappedBy="idempleado")
	private Set<DomicilioPersonaSie> tbDomicilioPersonas;

	//bi-directional many-to-one association to EstadoGeneralSie
    @ManyToOne
	@JoinColumn(name="idestadogeneral")
	private EstadoGeneralSie tbEstadoGeneral;
    
    @ManyToOne
	@JoinColumn(name="idcargoempleado")
	private CargoEmpleadoSie tbCargoEmpleadoSie;

	//bi-directional many-to-one association to TipoDocumentoIdentidadSie
    @ManyToOne
	@JoinColumn(name="idtipodocumentoidentidad")
	private TipoDocumentoIdentidadSie tbTipoDocumentoIdentidad;

	//bi-directional many-to-one association to HorarioAsistenciaSie
	@OneToMany(mappedBy="tbEmpleado")
	private Set<HorarioAsistenciaSie> tbHorarioAsistencias;

	//bi-directional many-to-one association to HorarioPersonalSie
	@OneToMany(mappedBy="tbEmpleado")
	private Set<HorarioPersonalSie> tbHorarioPersonals;

	//bi-directional many-to-one association to TelefonoPersonaSie
	@OneToMany(mappedBy="idempleado")
	private Set<TelefonoPersonaSie> tbTelefonoPersonas;

    public EmpleadoSie() {
    }

	public Integer getIdempleado() {
		return this.idempleado;
	}

	public void setIdempleado(Integer idempleado) {
		this.idempleado = idempleado;
	}

	public String getApematemp() {
		return this.apematemp;
	}

	public void setApematemp(String apematemp) {
		this.apematemp = apematemp;
	}

	public String getApepatemp() {
		return this.apepatemp;
	}

	public void setApepatemp(String apepatemp) {
		this.apepatemp = apepatemp;
	}

	
	public String getContrasena() {
		return this.contrasena;
	}

	public void setContrasena(String contrasena) {
		this.contrasena = contrasena;
	}

	public String getContrasenacorreo() {
		return this.contrasenacorreo;
	}

	public void setContrasenacorreo(String contrasenacorreo) {
		this.contrasenacorreo = contrasenacorreo;
	}

	public String getCorreo() {
		return this.correo;
	}

	public void setCorreo(String correo) {
		this.correo = correo;
	}

	public Timestamp getFechacreacion() {
		return this.fechacreacion;
	}

	public void setFechacreacion(Timestamp fechacreacion) {
		this.fechacreacion = fechacreacion;
	}

	public Timestamp getFechamodifica() {
		return this.fechamodifica;
	}

	public void setFechamodifica(Timestamp fechamodifica) {
		this.fechamodifica = fechamodifica;
	}

	public Date getFechanacimiento() {
		return this.fechanacimiento;
	}

	public void setFechanacimiento(Date fechanacimiento) {
		this.fechanacimiento = fechanacimiento;
	}

	public String getGenero() {
		return this.genero;
	}

	public void setGenero(String genero) {
		this.genero = genero;
	}

	public String getNombreemp() {
		return this.nombreemp;
	}

	public void setNombreemp(String nombreemp) {
		this.nombreemp = nombreemp;
	}

	public String getNumdocumento() {
		return this.numdocumento;
	}

	public void setNumdocumento(String numdocumento) {
		this.numdocumento = numdocumento;
	}

	public String getUsuario() {
		return this.usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getUsuariocreacion() {
		return this.usuariocreacion;
	}

	public void setUsuariocreacion(String usuariocreacion) {
		this.usuariocreacion = usuariocreacion;
	}

	public String getUsuariomodifica() {
		return this.usuariomodifica;
	}

	public void setUsuariomodifica(String usuariomodifica) {
		this.usuariomodifica = usuariomodifica;
	}

	public Set<ControlKardexSie> getTbControlKardexs() {
		return this.tbControlKardexs;
	}

	public void setTbControlKardexs(Set<ControlKardexSie> tbControlKardexs) {
		this.tbControlKardexs = tbControlKardexs;
	}
	
	public Set<DetPermisoEmpleadoSie> getTbDetPermisoEmpleados() {
		return this.tbDetPermisoEmpleados;
	}

	public void setTbDetPermisoEmpleados(Set<DetPermisoEmpleadoSie> tbDetPermisoEmpleados) {
		this.tbDetPermisoEmpleados = tbDetPermisoEmpleados;
	}
	
	public Set<DomicilioPersonaSie> getTbDomicilioPersonas() {
		return this.tbDomicilioPersonas;
	}

	public void setTbDomicilioPersonas(Set<DomicilioPersonaSie> tbDomicilioPersonas) {
		this.tbDomicilioPersonas = tbDomicilioPersonas;
	}
	
	public EstadoGeneralSie getTbEstadoGeneral() {
		return this.tbEstadoGeneral;
	}

	public void setTbEstadoGeneral(EstadoGeneralSie tbEstadoGeneral) {
		this.tbEstadoGeneral = tbEstadoGeneral;
	}
	
	public TipoDocumentoIdentidadSie getTbTipoDocumentoIdentidad() {
		return this.tbTipoDocumentoIdentidad;
	}

	public void setTbTipoDocumentoIdentidad(TipoDocumentoIdentidadSie tbTipoDocumentoIdentidad) {
		this.tbTipoDocumentoIdentidad = tbTipoDocumentoIdentidad;
	}
	
	public Set<HorarioAsistenciaSie> getTbHorarioAsistencias() {
		return this.tbHorarioAsistencias;
	}

	public void setTbHorarioAsistencias(Set<HorarioAsistenciaSie> tbHorarioAsistencias) {
		this.tbHorarioAsistencias = tbHorarioAsistencias;
	}
	
	public Set<HorarioPersonalSie> getTbHorarioPersonals() {
		return this.tbHorarioPersonals;
	}

	public void setTbHorarioPersonals(Set<HorarioPersonalSie> tbHorarioPersonals) {
		this.tbHorarioPersonals = tbHorarioPersonals;
	}
	
	public Set<TelefonoPersonaSie> getTbTelefonoPersonas() {
		return this.tbTelefonoPersonas;
	}

	public void setTbTelefonoPersonas(Set<TelefonoPersonaSie> tbTelefonoPersonas) {
		this.tbTelefonoPersonas = tbTelefonoPersonas;
	}
	
	public String getNombresCompletos() {
		nombresCompletos =nombreemp + " " + apepatemp + " " +apematemp; 
		return nombresCompletos;
	}

	/**
	 * @param nombresCompletos the nombresCompletos to set
	 */
	public void setNombresCompletos(String nombresCompletos) {
		this.nombresCompletos = nombresCompletos;
	}
	
	public int getCargo() {
		return cargo;
	}

	/**
	 * @param cargo the cargo to set
	 */
	public void setCargo(int cargo) {
		this.cargo = cargo;
	}

	public CargoEmpleadoSie getTbCargoEmpleadoSie() {
		return tbCargoEmpleadoSie;
	}

	public void setTbCargoEmpleadoSie(CargoEmpleadoSie tbCargoEmpleadoSie) {
		this.tbCargoEmpleadoSie = tbCargoEmpleadoSie;
	}
	
}